//
//  TimeModel.h
//  YunOs
//
//  Created by 周斌 on 15/11/9.
//  Copyright © 2015年 BruchChou. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface TimeModel : NSObject

/**
 *  获取指定年份元旦的NSDate数据
 *
 *  @param year 年
 *
 *  @return NSDate
 */
+(NSDate *)getTimeIntervalWithFistDayOfYear:(NSInteger)year;

/**
 *  固定日期格式字符串转NSDate
 *
 *  @param yearStr 不包含天
 *
 */
+(NSDate*)dateFormYearString:(NSString *)yearStr;
/**
 * 获取下一天的当前时间
 */
+(NSString *)getNextDayTime:(NSString *)timeStr;
/**
 *  固定日期格式字符串转NSDate
 *
 *  @param dateStr 包含天
 *
 */
+(NSDate *)dateFromString:(NSString *)dateStr;

/**
 消息时间转换

 @param dateString <#dateString description#>
 */
+ (NSString *)messageDate:(long)dateString;
/**
 *  NSDate时间转成字符串
 *
 *  @param timeInterval 不包含小数，且未考虑时区
 *
 *  @return  不包含时分秒,非通用方法
 */
+(NSString *)strFromTimeInterval:(long long)timeInterval;
/**
 *  为了转换为日期字符串
 */
+(NSDateComponents *)getComps:(NSDate *)date;

+(NSInteger)getCurrentYear;
+(NSInteger)getCurrentMonth;
+(NSInteger)getCurrentWeekday;
+(NSInteger)getCurrentDay;
+(NSInteger)getCurrentHour;
+(NSInteger)getCurrentMintue;
+(NSInteger)getDayCount:(NSString *)dateStr;//获取指定月的天数，dateStr格式“xxxx-xx”
+(NSString *)getCurrentTime;
+(NSString *)getCurrentDayTime;
+(NSString *)getNextDayTime;//获取第二天的时间
+(NSString *) getCurrentWeekTime; //当前周
+(NSString *)getCurrentTimeFormatter:(NSString *)formatter;
+(NSString *)getCurrentTimeWithTimeStr:(NSString *)timeStr;
/**
 获取指定格式的日期
 @param timeStr 日期字符串
 @param inFormatter 传入日期字符串的时间格式
 @param outFormatter 输出的日期字符串的时间格式
 */
+(NSString *)getScheduledTimeWithTimeStr:(NSString *)timeStr inFormatter:(NSString *)inFormatter outFormatter:(NSString *)outFormatter;

/**
 *  转化为上一天与下一天  上周和下周 以及上月和下月
 */
+(NSString *)getLastDayFormatter:(NSString *)dayTimeStr upPage:(BOOL)isUpPage;
+(NSString *)getLastWeekFormatter:(NSString *)weekTimeStr upPage:(BOOL)isUpPage;
+(NSString *)getLastMonthFormatter:(NSString *)monthTimeStr upPage:(BOOL)isUpPage;


//以下两个方法解决的是个位的月或者天转化成字符串前面没有0的问题
+(NSString *)strMonthFromIntMonth:(NSInteger)intMonth;
+(NSString *)strDayFromIntDay:(NSInteger)intDay;



+(NSString *)getDateStringWithTimeInterval:(long long)timeInterval;
+(NSString *)getTimeStringWithTimeInterval:(long long)timeInterval;
+(NSString *)getWeekDayStringWithTimeInterval:(long long)timeInterval;
+(NSString *)getDateStringWithTimeInterval:(long long)timeInterval withFormateString:(NSString *)formateString;
/**
 *  和当前时间比较
 *
 *  @param dateString <#dateString description#>
 *  @param formate    <#formate description#>
 *
 *  @return 返回时间比较结果 （刚刚、X分钟前...）
 */
+ (NSString *)formateDate:(NSString *)dateString withFormate:(NSString *)formate;

+ (NSString *)withDateString:(NSString *)dateString formateString:(NSString *)formateString;
/**
 *  通用的时间戳转时间
 *
 *  @param timeInterval 考虑的时区
 *
 *  @return 通用yyyy-mm-dd
 */
+(NSString *)commonStrFromTimeInterval:(long long)timeInterval;


/**
 *  根据时间字符串 返回毫秒数
 *
 *  @param dateStr 时间字符串
 *  @param formatterStr    时间格式戳
 *
 *  @return <#return value description#>
 */
+ (long long)timeIntervalFromDate:(NSString *)dateStr withformatter:(NSString *)formatterStr;
/**
*  根据时间字符串 返回秒数
*
*  @param dateStr 时间字符串
*  @param formatterStr    时间格式戳
*
*  @return <#return value description#>
*/
+ (long long)timeSecondIntervalFromDate:(NSString *)dateStr withformatter:(NSString *)formatterStr;
/**
 *  根据时间NSDate 返回毫秒数
 */
+ (long long)longlongFromDate:(NSDate *)date;


/**
 根据NSDate  返回日期字符串

 @param date NSDate
 @param formatter 时间戳
 @return 日期字符串
 */
+ (NSString *)stringFromDate:(NSDate *)date andFormatter:(NSString *)formatter;


/**
 毫秒数转化为日期字符串

 @param msSince1970 毫秒数
 @param formatter 时间戳
 @return 日期字符串
 */
+ (NSString *)dateFromLongLong:(long long)msSince1970 andFormatter:(NSString *)formatter;

/**
秒数转化为日期字符串

@param msSince1970 秒数
@param formatter 时间戳
@return 日期字符串
*/
+ (NSString *)dateFromLongLongSecond:(long long)msSince1970 andFormatter:(NSString *)formatter;

/**
 日期字符串转化为时间

 @param dateStr 日期字符串
 @param formatter 时间戳
 @return NSDate
 */
+(NSDate *)dateFromString:(NSString *)dateStr andFormatter:(NSString *)formatter;

/**
 获取日期
 @param year 1为1年以后的日期 -1为年之前的日期 0为今年
 @param month 1为1个月以后的日期 -1为一个月之前的日期 0为本月
 @param day 1为1天以后的日期 -1为一天之前的日期 0为今天
 @param date 当前的日期
 @return 日期字符串
 */
+(NSString*)getDateWithYear:(int)year month:(int)month day:(int)day withDate:(NSDate *)date andFormatter:(NSString *)formatter;

/**
 *  获取网络当前时间
 */

+ (NSString *)getInternetDate;

/**
 算时间差

 @param startTime 开始时间
 @param endTime 结束时间
 @return 时间差
 */
+ (NSString *)dateTimeDifferenceWithStartTime:(NSString *)startTime endTime:(NSString *)endTime;

/**
 计算时间差

 @param starTime 开始时间
 @param endTime 结束时间
 @return 时间差
 */
+ (NSTimeInterval)pleaseInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime;


+ (NSString *)getRidOfSpaceAndTab: (NSString*)contentStr;


/**
 年月日时分秒转化成年月日时分

 @param timeStr 年月日时分秒
 @return           年月日时分
 */
+ (NSString *)getRidOfSecondStr:(NSString*)timeStr;


/**
 根据格式转换时间戳

 @param timeInterval 时间戳
 @param formatter 时间格式
 @return 返回的时间
 */
+ (NSString *)getTimeFromTimeInterval:(NSString *)timeInterval FromFormatter:(NSString *)formatter;
//计算当前时间和已知过去时间的时间差
+ (NSTimeInterval)pleaseInsertStarTimeInterval:(NSString *)starTime;
@end
